/**
 * Environment.java
 * created on 2012/05/24
 */
package dh.abs;

/**
 * This interface represents environment of simulation.
 * Typically, environment contains the agents and global dominant factors.
 * @author denialhumanity
 *
 */
public interface Environment {
    /**
     * This method prepares one step of this simulation
     * such as selecting agent pairs, and preparing some events.
     */
    public void preStep();
    
    /**
     * This method does one step of this simulation.
     * Typically, this method calls nextStep function of all or specific agents.
     */
    public void nextStep();
    
    /**
     * This method does post-process of each step.
     * If there are some environmental variables, this method updates all those variables
     * according to the results of agents' actions.
     */
    public void postStep();

}
